﻿using System;
using System.Collections.Generic;

namespace E.Model
{
    [Serializable]
    public class ShortClassModel
    {
        private int _id;
        private int _courseid;
        private string _coursename;
        private int _coursecategoryid;
        private string _coursecategoryname;
        private decimal _schoolhour;
        private DateTime _starttime;
        private DateTime _endtime;
        private bool _isfull;
        private int _courserelationid;

        /// <summary>
        /// 
        /// </summary>
        public int ID
        {
            set { _id = value; }
            get { return _id; }
        }

        public int CourseID
        {
            get;
            set;
        }

        public string CourseName
        {
            get;
            set;
        }

        public int CourseCategoryID
        {
            get;
            set;
        }

        public string CourseCategoryName
        {
            get;
            set;
        }

        public decimal SchoolHour
        {
            get;
            set;
        }

        /// <summary>
        /// 开始时间
        /// </summary>
        public DateTime StartTime
        {
            set { _starttime = value; }
            get { return _starttime; }
        }

        /// <summary>
        /// 结束时间
        /// </summary>
        public DateTime EndTime
        {
            set { _endtime = value; }
            get { return _endtime; }
        }

        /// <summary>
        /// 是否已满
        /// </summary>
        public bool IsFull
        {
            set { _isfull = value; }
            get { return _isfull; }
        }

        public string TeacherName
        {
            get;
            set;
        }

        public int MaxCount
        {
            get;
            set;
        }

        public int CurrentCount
        {
            get;
            set;
        }

        public string Description
        {
            get;
            set;
        }

        public string ClassCode
        { get; set; }
        public string AreaName
        { get; set; }

        /// <summary>
        /// 课程证书关系ID
        /// </summary>
        public int CourseRelationID
        {
            set { _courserelationid = value; }
            get { return _courserelationid; }
        }
        /// <summary>
        /// 报名方式
        /// </summary>
        public int SignUpType
        {
            get;
            set;
        }
        /// <summary>
        /// 老师审核学生ID
        /// </summary>
        public string UserIDArr
        {
            get;
            set;
        }
    }

    [Serializable]
    public class ClassModel
    {
        #region Model

        private int _id;
        private int _courserelationid;
        private int _certificateid;
        private string _certificatename;
        private int _courseid;
        private string _coursename;
        private int _coursecategoryid;
        private string _coursecategoryname;
        private decimal _schoolhour;
        private int _teacherid;
        private string _teachername;
        private string _classcode;
        private int _areaid;
        private DateTime _starttime;
        private DateTime _endtime;
        private int _maxcount;
        private int _currentcount;
        private bool _isfull;
        private bool _delflag;

        #region Search Condition

        public string StartFromDate
        { get; set; }
        public string StartToDate
        { get; set; }
        public string EndFromDate
        { get; set; }
        public string EndToDate
        { get; set; }

        #endregion

        /// <summary>
        /// 
        /// </summary>
        public int ID
        {
            set { _id = value; }
            get { return _id; }
        }

        /// <summary>
        /// 课程证书关系ID
        /// </summary>
        public int CourseRelationID
        {
            set { _courserelationid = value; }
            get { return _courserelationid; }
        }

        public int CertificateID
        {
            get;
            set;
        }

        public string CertificateName
        {
            get;
            set;
        }

        public int CourseID
        {
            get;
            set;
        }

        public string CourseName
        {
            get;
            set;
        }

        public int CourseCategoryID
        {
            get;
            set;
        }

        public string CourseCategoryName
        {
            get;
            set;
        }

        public decimal SchoolHour
        {
            get;
            set;
        }

        /// <summary>
        /// 老师ID
        /// </summary>
        public int TeacherID
        {
            set { _teacherid = value; }
            get { return _teacherid; }
        }

        public string TeacherName
        {
            get;
            set;
        }

        /// <summary>
        /// 班级编号
        /// </summary>
        public string ClassCode
        {
            set { _classcode = value; }
            get { return _classcode; }
        }

        public int AreaID
        {
            get;
            set;
        }

        public string AreaName { get; set; }

        /// <summary>
        /// 开始时间
        /// </summary>
        public DateTime StartTime
        {
            set { _starttime = value; }
            get { return _starttime; }
        }

        /// <summary>
        /// 结束时间
        /// </summary>
        public DateTime EndTime
        {
            set { _endtime = value; }
            get { return _endtime; }
        }

        /// <summary>
        /// 最大人数
        /// </summary>
        public int MaxCount
        {
            set { _maxcount = value; }
            get { return _maxcount; }
        }
        /// <summary>
        /// 不需要审核学生ID
        /// </summary>
        public string StudentArrayId
        {
            get;
            set;
        }
        /// <summary>
        /// 当前人数
        /// </summary>
        public int CurrentCount
        {
            set { _currentcount = value; }
            get { return _currentcount; }
        }

        /// <summary>
        /// 是否已满
        /// </summary>
        public bool IsFull
        {
            set { _isfull = value; }
            get { return _isfull; }
        }

        /// <summary>
        /// 删除标识
        /// </summary>
        public bool DelFlag
        {
            set { _delflag = value; }
            get { return _delflag; }
        }
        /// <summary>
        /// 报名方式
        /// </summary>
        public int SignUpType 
        { 
            get; 
            set; 
        }
        /// <summary>
        /// 老师审核学生ID
        /// </summary>
        public string UserIDArr 
        {
            get; 
            set; 
        }

        #endregion Model
    }

    [Serializable]
    public class ClassListModel
    {
        private int _totalcount;
        private IList<ShortClassModel> _list;

        public int TotalCount
        {
            get;
            set;
        }

        public IList<ShortClassModel> List
        {
            get;
            set;
        }
    }

    [Serializable]
    public class ClassUserCountModel
    {
        public int ClassID { get; set; }
        public string ClassCode { get; set; }
        public string TeacherName { get; set; }
        public int UserCount { get; set; }
        public int AttendedUserCount { get; set; }
        public string CertificateName { get; set; }
        public string CourseName { get; set; }
        public string AreaName { get; set; }
        public DateTime StartTime { get; set; }
        public DateTime EndTime { get; set; }
    }

    [Serializable]
    public class ClassUserCountListModel
    {
        public int TotalCount { get; set; }
        public IList<ClassUserCountModel> List { get; set; }
    }

    #region Internal

    [Serializable]
    public class InternalClassModel
    {
        public int ID { get; set; }
        public string ClassCode { get; set; }
        public int CourseID { get; set; }
        public string CourseName { get; set; }
        public int ProjectID { get; set; }
        public string ProjectName { get; set; }
        public int TeacherID { get; set; }
        public string TeacherName { get; set; }
        public string StudentArrayId { get; set; }
        public string CourseArrayId { get; set; }
        public int SignUpType { get; set; }
        public string UserIDArr { get; set; }
    }

    [Serializable]
    public class InternalClassSearchModel
    {
        public string ClassCode { get; set; }
        public int CourseID { get; set; }
        public int ProjectID { get; set; }
        public int DelFlag { get; set; }
        public int SkillGroup { get; set; }
    }

    [Serializable]
    public class InternalClassListModel
    {
        public int TotalCount { get; set; }
        public IList<InternalClassModel> List { get; set; }
    }

    #endregion

    #region Internal Public

    [Serializable]
    public class InternalPublicClassModel
    {
        public int ID { get; set; }
        public string ClassCode { get; set; }
        public int CourseID { get; set; }
        public string CourseName { get; set; }
        public int ProjectID { get; set; }
        public string ProjectName { get; set; }
    }

    [Serializable]
    public class InternalPublicClassSearchModel
    {
        public string ClassCode { get; set; }
        public int CourseID { get; set; }
        public int ProjectID { get; set; }
        public bool IsInternal { get; set; }
    }

    [Serializable]
    public class InternalPublicClassListModel
    {
        public int TotalCount { get; set; }
        public IList<InternalPublicClassModel> List { get; set; }
    }

    #endregion
}
